Quais os comandos necessários necessários para realizar uma consuta em Oracle de forma hierárquica?

questão 11 forma hierárquica oracle

Veja abaixo a resposta de uma questão sobre banco de dados Oracle que foi usado no concurso público do hospital de clínicas em 2017.

Questão 11 - Retirada do CONCURSO PÚBLICO Nº 04/2017 do HOSPITAL DE CLÍNICAS de Porto Alegre RS – da FAURGS para o cargo de ANALISTA DE TI I (Analista de Negócios)


Faz-se necessário realizar uma consulta em um banco de dados Oracle para apresentar de forma hierárquica as informações da tabela FAMILIA, logo abaixo.


ID NM_FAMILIA ID_SUP NM_PESSOA TIPO
1 SILVA JOÃO DA SILVA PAI
2 SILVA 1 ROSE PEREIRA DA SILVA MAE
3 SILVA 1 ANTONIO PEREIRA DA SILVA FILHO
4 SILVA 1 AUGUSTO PEREIRA DA SILVA FILHO
5 FARIAS MARIA FARIAS MAE
6 FARIAS 5 FABRICIO FARIAS FILHO
7 FARIAS 5 VERA FARIAS FILHA
8 FARIAS 7 NATALIA FARIAS FILHA

Assinale a alternativa que apresenta, de forma correta, os comandos para a realização dessa consulta.

(A) SELECT LEVEL NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM WHERE FAM. ID = FAM.ID_SUP ORDER BY FAM.ID_SUP;

(B) SELECT LEVEL NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM START WITH FAM.ID_SUP IS NULL CONNECT BY PRIOR ID = FAM.ID_SUP;

(C) SELECT FAM.ID_SUP NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM, FAMILIA FAM1 WHERE FAM.ID = FAM1.ID_SUP ORDER BY FAM.ID_SUP;

(D) SELECT LEVEL NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM START WITH FAM.ID_SUP IS NOT NULL CONNECT BY PRIOR ID = FAM.ID_SUP;

(E) SELECT FAM.ID_SUP NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM, FAMILIA FAM1 WHERE FAM.ID_SUP = FAM1.ID_SUP ORDER BY FAM.ID_SUP;

Qual a alternativa correta de acordo com o gabarito?

A alternativa correta é a letra B.

Por que a letra B é a alternativa correta?

Isso porque a consulta deve ser realizada de forma hierárquica, ou seja, apresentando a relação pai-filho. Para isso, é necessário utilizar o comando CONNECT BY PRIOR para estabelecer a conexão entre as linhas da tabela.

Além disso, a cláusula START WITH deve ser usada para iniciar a hierarquia, e como no caso da tabela FAMILIA o pai/mãe não tem um ID_SUP associado, é necessário usar a condição "IS NULL" para iniciar a hierarquia.

Portanto, a consulta correta é:

SELECT LEVEL NIVEL,FAM.NM_FAMILIA,FAM.NM_PESSOA,FAM.TIPO
FROM FAMILIA FAM
START WITH FAM.ID_SUP IS NULL
CONNECT BY PRIOR ID = FAM.ID_SUP;

Por que as outras alternativas estão erradas?

Aqui está uma explicação sobre as outras alternativas:

A) Esta consulta está ordenando pelo ID_SUP, mas como o pai/mãe da família não tem um ID_SUP associado, essa ordenação não fará sentido e a hierarquia não será estabelecida corretamente.

C)
Esta consulta está usando um join entre a tabela FAMILIA e ela mesma, mas não está estabelecendo a hierarquia corretamente. Além disso, está ordenando pelo ID_SUP, o que também não fará sentido para o pai/mãe da família.

D) A cláusula START WITH está usando a condição "IS NOT NULL", o que fará com que o pai/mãe da família seja incluído na hierarquia, mas como ele não tem um ID_SUP associado, isso fará com que a hierarquia fique incorreta.

E) Esta consulta está fazendo um join entre a tabela FAMILIA e ela mesma, mas não está estabelecendo a hierarquia corretamente. Além disso, está ordenando pelo ID_SUP, o que também não fará sentido para o pai/mãe da família.

Qual o assunto dessa questão?

Banco de Dados Relacional (ORACLE), linguagem procedural, linguagem SQL;

Qual o conhecimento necessário para responder corretamente essa questão?

Para responder corretamente essa questão, é necessário ter conhecimento em:

  • Modelagem de dados (E-R);
  • Comandos SQL para consulta em banco de dados Oracle;
  • Hierarquia de dados usando o comando CONNECT BY PRIOR;
  • Cláusulas START WITH e WHERE para filtrar dados na consulta.

Além disso, é importante ter conhecimentos básicos em banco de dados relacional, modelagem UML e gerenciamento de projetos para entender o contexto da questão e a importância da consulta solicitada.

Qual a difilculdade dessa questão?

A dificuldade dessa questão pode estar em entender como estabelecer a hierarquia de dados de forma correta usando o comando CONNECT BY PRIOR, além de saber como usar as cláusulas START WITH e WHERE para filtrar os dados da consulta.

Também é importante entender o contexto da questão e a importância da consulta solicitada, que é apresentar as informações da tabela de forma hierárquica, para que a alternativa correta possa ser identificada.

Inglês Técnico:

SELECT

Significado: Selecionar

Aplicação: O comando SELECT é utilizado para recuperar dados de uma ou mais tabelas em um banco de dados. Ele permite especificar as colunas que você deseja selecionar e as condições para filtrar os resultados.

FROM

Significado: De

Aplicação: A cláusula FROM é usada em conjunto com o comando SELECT para especificar de quais tabelas os dados devem ser recuperados. Ela indica a fonte das informações que serão selecionadas.

LEVEL

Significado: Nível

Aplicação: A pseudo coluna LEVEL é usada em consultas que envolvem consultas hierárquicas. Ela representa o nível de hierarquia de uma linha em uma consulta que utiliza a cláusula CONNECT BY.

ORDER BY

Significado: Ordenar por

Aplicação: A cláusula ORDER BY é utilizada para ordenar os resultados de uma consulta em uma ordem específica, com base em uma ou mais colunas. Ela pode ser usada tanto em consultas simples quanto em consultas complexas.

START WITH

Significado: Iniciar com

Aplicação: A cláusula START WITH é utilizada em consultas hierárquicas para especificar a condição inicial da hierarquia. Ela indica a raiz da árvore hierárquica a partir da qual a consulta será iniciada.

IS NULL

Significado: É nulo

Aplicação: O operador IS NULL é utilizado para verificar se uma expressão ou coluna possui valor nulo. Ele retorna verdadeiro se o valor for nulo e falso caso contrário.

CONNECT BY PRIOR

Significado: Conectar por anterior

Aplicação: A cláusula CONNECT BY PRIOR é utilizada em consultas hierárquicas para especificar a relação pai-filho entre as linhas de uma tabela. Ela define a condição de conexão entre as linhas hierárquicas.

WHERE

Significado: Onde

Aplicação: A cláusula WHERE é utilizada para filtrar os resultados de uma consulta com base em uma condição específica. Ela permite restringir as linhas retornadas pela consulta de acordo com os critérios definidos.

IS NOT NULL

Significado: Não é nulo

Aplicação: O operador IS NOT NULL é utilizado para verificar se uma expressão ou coluna não possui valor nulo. Ele retorna verdadeiro se o valor não for nulo e falso caso contrário.

Veja mais em:

Para que serve o comando CONNECT BY PRIOR no banco de dados Oracle?

Para que serve START WITH no banco de dados Oracle?

Para que serve IS NULL no banco de dados Oracle?

Quer acompanhar as novidade do site?

Leia mais em: ww.oracle.com/br/database/

Quais os comandos necessários necessários para realizar uma consuta em Oracle de forma hierárquica?

Última atualização: 2023-07-07

Quer acompanhar as novidade do site?
Veja também:

Resumão dos principais assuntos para a prova do CRF-RS 2024 de acordo com o edital e provas relacionadas.

Principais assuntos prova CRF RS 2024

Como remover caracteres especiais no mysql?

remover caracteres especiais mysql

Qual a resposta correta da questão 12 sobre oracle e to_char do concurso público da FAURGS de 2017?

questão 12 sysdate oracle

Explorando Tipos de Restrições de Integridade no Oracle 12c

Questão 1 Integridade Banco de Dados Oracle

Questão 12 - HCPA 2011 - ANALISTA DE SISTEMAS I (ADMINISTRADOR DE BANCO DE DADOS E SEGURANÇA DA INFORMAÇÃO)

questão 12 PLSQL package

Quais os termos em inglês mais usados em banco de dados?

Inglês técnico banco de dados

Web Stories